Simulation has traditionally been the preferred means for validating a circuit. Simulation usually entails analyzing the circuit response to a set of input stimuli over a certain time interval. Simulation can be performed at different levels. At the geometrical level of abstraction, circuits can be modeled as an interconnection of electronic devices (e.g., transistors) and parasitics (e.g., resistance and capacitance). Circuit-level simulation corresponds to deriving the voltage levels at certain circuit nodes as a function of time. Logic-level simulation is the analysis of the functionality of a circuit in terms of logic variables. Functional-level simulation corresponds to simulating HDL or other models of digital circuits.
A designer can simulate a model of a circuit under development together with models of other previously designed (or off-the-shelf) circuits. In other words, simulation allows a designer to validate a circuit in its environment. While there have been various breakthroughs in simulation technology over the years, simulators usually operate with a great number of inefficiencies. For example, hardware simulators routinely execute the evaluation of many cells whose outputs are not going to change for a certain period of time. This unnecessary evaluation results in the waste of large amounts of processing time. Furthermore, in large designs, the mere accessing or updating of information about a cell that does not need to be re-evaluated can cause memory cache misses. This also results in the waste of large amounts of processing time.
Thus, there exists a need for improvements to simulation technology.